home *** CD-ROM | disk | FTP | other *** search
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.util.Random;
- import javax.microedition.lcdui.Canvas;
- import javax.microedition.lcdui.Displayable;
- import javax.microedition.lcdui.Font;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
-
- final class Game extends Canvas {
- private byte[] board;
- private byte[] undoBoard;
- private Image[] image;
- private Image logo;
- private Image goi;
- private Image tti;
- private Image mrgi;
- private Image hsi;
- // $FF: renamed from: db javax.microedition.lcdui.Image
- private Image field_0;
- private Graphics dbg;
- // $FF: renamed from: x byte
- private byte field_1;
- // $FF: renamed from: y byte
- private byte field_2;
- private boolean carrying;
- // $FF: renamed from: pX byte
- private byte field_3;
- // $FF: renamed from: pY byte
- private byte field_4;
- private int game_score;
- private boolean gameOver;
- private boolean canUndo;
- private boolean reset;
- private int undo_score;
- private int high_score;
- private Runko runko;
- private int xpad;
- private int xpad2;
- private int ypad;
- private int ypad2;
- private Object obj = new Object();
- private int state;
- // $FF: renamed from: bt byte[]
- private byte[] field_5;
- private int blink;
- private byte type = 101;
- private Font font;
- private int bgColor;
- // $FF: renamed from: hc boolean
- private boolean field_6;
- // $FF: renamed from: w int
- private int field_7;
- // $FF: renamed from: h int
- private int field_8;
- // $FF: renamed from: w2 int
- private int field_9;
- // $FF: renamed from: h2 int
- private int field_10;
- private boolean paused;
- Thread thread;
- private int progress = 0;
- Image[] kuvat;
- boolean fthn = true;
- int drawThis;
- int key;
- // $FF: renamed from: kp boolean
- boolean field_11;
- boolean[] poista = new boolean[70];
- static final int[] dirs = new int[]{-1, -1, 0, -1, 1, -1, 1, 0, -1, 0, -1, 1, 0, 1, 1, 1};
- boolean[] closed = new boolean[70];
- static Random rnd0 = new Random();
- Image ihsEasy;
- Font hsfont;
- private String[][] hsName = new String[1][10];
- private int[][] hsValue = new int[1][10];
- boolean bStartMenu;
- Image[] iHelp;
- Image[] iStart;
- // $FF: renamed from: ih int
- int field_12;
- boolean startEasy;
- boolean sblink;
-
- Game(Runko var1) {
- this.runko = var1;
- this.board = new byte[70];
- this.undoBoard = new byte[70];
- this.image = new Image[8];
- this.field_5 = new byte[70];
- this.field_7 = ((Canvas)this).getWidth();
- this.field_8 = ((Canvas)this).getHeight();
- this.field_9 = this.field_7 >> 1;
- this.field_10 = this.field_8 >> 1;
- this.font = Font.getFont(64, 0, 8);
- this.bgColor = 16777215;
- }
-
- public Image[] getPics() {
- return this.kuvat;
- }
-
- public void exit() {
- this.reset = true;
- Object var1 = this.obj;
- synchronized(var1) {
- this.obj.notifyAll();
- }
- }
-
- public void init() {
- try {
- Runko.setProgressMax(13);
- this.field_0 = Image.createImage(this.field_7, this.field_8);
- this.dbg = this.field_0.getGraphics();
- Runko.addProgress();
-
- for(int var1 = 0; var1 < 8; ++var1) {
- this.image[var1] = Jil.loadImage(Integer.toString(var1));
- Runko.addProgress();
- }
-
- this.goi = Jil.loadImage("gameover");
- Runko.addProgress();
- this.tti = Jil.loadImage("topten");
- Runko.addProgress();
- this.hsi = Image.createImage(this.field_7, this.font.getHeight() * 10);
- this.xpad = this.field_7 - this.image[0].getWidth() >> 1;
- this.ypad = this.field_8 - this.image[0].getHeight() >> 1;
- this.xpad2 = this.xpad + 2;
- this.ypad2 = this.ypad;
- Runko.addProgress();
- this.hsfont = Font.getFont(64, 0, 8);
- this.ihsEasy = Image.createImage(this.field_7 > this.tti.getWidth() ? this.tti.getWidth() : this.field_7, 7 + this.tti.getHeight() + this.hsfont.getHeight() * 10);
- Runko.addProgress();
- this.kuvat = new Image[1];
- this.kuvat[0] = this.ihsEasy;
-
- for(int var2 = 0; var2 < 10; ++var2) {
- this.hsName[0][var2] = "MrG";
- this.hsValue[0][var2] = 1000 - var2 * 100;
- }
-
- this.iHelp = new Image[2];
- this.iHelp[0] = Jil.loadImage("intro");
- this.iHelp[1] = Jil.loadImage("controls");
- this.iStart = new Image[2];
- this.iStart[0] = Jil.loadImage("start_off");
- Runko.addProgress();
- this.iStart[1] = Jil.loadImage("start_on");
- this.loadHighScores();
- this.updateHighscoreImages();
- Runko.addProgress();
- } catch (Exception var3) {
- System.out.println(((Throwable)var3).toString());
- }
-
- }
-
- public int run() {
- try {
- this.bStartMenu = true;
-
- while(!((Displayable)this).isShown()) {
- Thread.sleep(100L);
- }
-
- this.startMenu();
- this.bStartMenu = false;
- this.reset = false;
- this.newGame();
- this.blink = 0;
- this.type = 2;
- this.state = 0;
- this.myPaint();
- Sounds.play(7);
- this.myPaint(9);
- this.myPaint(5);
- this.myPaint(8);
- this.key = -1;
-
- while(!this.gameOver && !this.reset) {
- for(; !this.isKeyPressed() && !this.reset; this.waitForKey(300)) {
- this.state ^= 1;
- if (this.state == 0) {
- if (this.carrying) {
- this.myPaint(7);
- }
-
- this.myPaint(10);
- } else {
- if (this.carrying) {
- this.myPaint(6);
- }
-
- this.myPaint(4);
- }
- }
-
- if (this.reset) {
- break;
- }
-
- while(true) {
- this.myPaint(6);
- this.myPaint(3);
- this.keys();
- if (this.carrying) {
- this.myPaint(7);
- }
-
- this.myPaint(4);
- this.waitForKeyRelease(150);
- if (!this.isKeyPressed()) {
- break;
- }
- }
- }
-
- if (!this.reset) {
- this.myPaint(3);
- this.type = 3;
- this.myPaint();
- Thread.sleep(2000L);
- Thread.sleep(2000L);
- }
- } catch (Exception var2) {
- }
-
- return -1;
- }
-
- protected void hideNotify() {
- if (this.fthn) {
- this.fthn = false;
- } else {
- this.pause();
- }
-
- }
-
- protected void showNotify() {
- this.resume();
- this.myPaint();
- }
-
- private void myPaint() {
- this.drawThis = 0;
- ((Canvas)this).repaint();
- ((Canvas)this).serviceRepaints();
- Thread.yield();
- }
-
- private void myPaint(int var1) {
- this.drawThis = var1;
- ((Canvas)this).repaint();
- ((Canvas)this).serviceRepaints();
- Thread.yield();
- }
-
- protected void paint(Graphics var1) {
- if (this.bStartMenu) {
- this.startMenu(var1);
- } else {
- var1.setClip(0, 0, this.field_7, this.field_8);
- label64:
- switch (this.drawThis) {
- case 0:
- switch (this.type) {
- case 2:
- this.dbg.setColor(this.bgColor);
- this.dbg.fillRect(0, 0, this.field_7, this.field_8);
- this.drawBoard(this.dbg);
- this.drawScore(this.dbg);
- var1.drawImage(this.field_0, 0, 0, 20);
- break label64;
- case 3:
- this.dbg.setColor(this.bgColor);
- this.dbg.fillRect(0, 0, this.field_7, this.field_8);
- this.drawBoard(this.dbg);
- this.drawScore(this.dbg);
- this.dbg.drawImage(this.goi, this.field_9, 40, 3);
- var1.drawImage(this.field_0, 0, 0, 20);
- break label64;
- case 102:
- var1.setColor(16777215);
- var1.fillRect(0, 0, this.field_7, this.field_8);
- default:
- break label64;
- }
- case 1:
- for(byte var2 = 0; var2 < 7; ++var2) {
- for(byte var5 = 0; var5 < 10; ++var5) {
- if (this.field_5[var2 * 10 + var5] != 0) {
- var1.setClip(this.xpad2 + var5 * 9, this.ypad2 + var2 * 9, 10, 10);
- var1.drawImage(this.image[0], this.xpad, this.ypad, 20);
- }
- }
- }
- break;
- case 2:
- for(byte var3 = 0; var3 < 7; ++var3) {
- for(byte var4 = 0; var4 < 10; ++var4) {
- if (this.field_5[var3 * 10 + var4] != 0) {
- var1.drawImage(this.image[this.field_5[var3 * 10 + var4]], this.xpad2 + 1 + var4 * 9, this.ypad2 + 1 + var3 * 9, 20);
- }
- }
- }
- break;
- case 3:
- var1.setClip(this.xpad2 + this.field_1 * 9, this.ypad2 + this.field_2 * 9, 10, 10);
- this.drawBoard(var1);
- break;
- case 4:
- var1.setClip(this.xpad2 + this.field_1 * 9, this.ypad2 + this.field_2 * 9, 10, 10);
- this.drawBoard(var1);
- if (this.carrying) {
- var1.drawImage(this.image[this.board[this.field_4 * 10 + this.field_3]], this.xpad2 + 1 + this.field_1 * 9, this.ypad2 + 1 + this.field_2 * 9, 20);
- }
-
- var1.setColor(0);
- var1.drawRect(this.xpad2 + this.field_1 * 9, this.ypad2 + this.field_2 * 9, 9, 9);
- break;
- case 5:
- this.drawBoard(var1);
- break;
- case 6:
- var1.setClip(this.xpad2 + this.field_3 * 9, this.ypad2 + this.field_4 * 9, 10, 10);
- this.drawBoard(var1);
- break;
- case 7:
- var1.setColor(0);
- var1.drawRect(this.xpad2 + this.field_3 * 9, this.ypad2 + this.field_4 * 9, 9, 9);
- break;
- case 8:
- this.drawScore(var1);
- break;
- case 9:
- var1.setColor(this.bgColor);
- var1.fillRect(0, 0, this.field_7, this.field_8);
- break;
- case 10:
- var1.setClip(this.xpad2 + this.field_1 * 9, this.ypad2 + this.field_2 * 9, 10, 10);
- this.drawBoard(var1);
- var1.setColor(0);
- var1.drawRect(this.xpad2 + 1 + this.field_1 * 9, this.ypad2 + 1 + this.field_2 * 9, 7, 7);
- }
-
- this.drawThis = 0;
- }
-
- }
-
- private void drawBoard(Graphics var1) {
- var1.drawImage(this.image[0], this.xpad, this.ypad, 20);
- int var2 = var1.getClipX() - 9;
- int var3 = var2 + var1.getClipWidth() + 9;
- int var4 = var1.getClipY() - 9;
- int var5 = var4 + var1.getClipHeight() + 9;
-
- for(byte var6 = 0; var6 < 7; ++var6) {
- for(byte var7 = 0; var7 < 10; ++var7) {
- int var8 = this.xpad2 + 1 + var7 * 9;
- int var9 = this.ypad2 + 1 + var6 * 9;
- if (this.board[var6 * 10 + var7] > 0 && var8 >= var2 && var9 >= var4 && var8 <= var3 && var9 <= var5) {
- var1.drawImage(this.image[this.board[var6 * 10 + var7]], var8, var9, 20);
- }
- }
- }
-
- }
-
- private void drawScore(Graphics var1) {
- var1.setClip(0, this.ypad + 76 - this.font.getBaselinePosition(), this.field_7, this.font.getHeight());
- var1.drawImage(this.image[0], this.xpad, this.ypad, 20);
- var1.setColor(0);
- var1.drawString("Score: " + this.game_score, this.field_9, this.ypad + 76, 65);
- var1.setClip(0, 0, this.field_7, this.field_8);
- }
-
- private void undoMove() {
- if (this.canUndo) {
- Sounds.play(5);
- System.arraycopy(this.undoBoard, 0, this.board, 0, this.undoBoard.length);
- this.game_score = this.undo_score;
- this.canUndo = false;
- }
-
- }
-
- private void newGame() {
- for(int var1 = 0; var1 < this.board.length; ++var1) {
- this.board[var1] = 0;
- }
-
- this.carrying = false;
-
- for(int var2 = 0; var2 < 9 && !this.checkFull(); ++var2) {
- int var3 = rnd() % 10;
- int var4 = rnd() % 7;
- if (this.board[var4 * 10 + var3] == 0) {
- this.board[var4 * 10 + var3] = (byte)(rnd() % 7 + 1);
- }
- }
-
- this.canUndo = false;
- this.gameOver = false;
- this.game_score = 0;
-
- for(int var5 = 0; var5 < this.field_5.length; ++var5) {
- this.field_5[var5] = 0;
- }
-
- }
-
- private void keys() {
- if (this.key == 1) {
- --this.field_1;
- if (this.field_1 < 0) {
- this.field_1 = 9;
- }
- } else if (this.key == 2) {
- ++this.field_1;
- if (this.field_1 > 9) {
- this.field_1 = 0;
- }
- } else if (this.key == 3) {
- ++this.field_2;
- if (this.field_2 > 6) {
- this.field_2 = 0;
- }
- } else if (this.key == 4) {
- --this.field_2;
- if (this.field_2 < 0) {
- this.field_2 = 6;
- }
- } else if (this.key == 6) {
- --this.field_1;
- --this.field_2;
- if (this.field_1 < 0) {
- this.field_1 = 9;
- }
-
- if (this.field_2 < 0) {
- this.field_2 = 6;
- }
- } else if (this.key == 7) {
- ++this.field_1;
- --this.field_2;
- if (this.field_1 > 9) {
- this.field_1 = 0;
- }
-
- if (this.field_2 < 0) {
- this.field_2 = 6;
- }
- } else if (this.key == 8) {
- --this.field_1;
- ++this.field_2;
- if (this.field_1 < 0) {
- this.field_1 = 9;
- }
-
- if (this.field_2 > 6) {
- this.field_2 = 0;
- }
- } else if (this.key == 9) {
- ++this.field_1;
- ++this.field_2;
- if (this.field_1 > 9) {
- this.field_1 = 0;
- }
-
- if (this.field_2 > 6) {
- this.field_2 = 0;
- }
- } else if (this.key == 5) {
- this.carrying = false;
- Sounds.play(5);
- } else if (this.key == 0) {
- this.key = -1;
- if (this.carrying) {
- if (this.field_1 == this.field_3 && this.field_2 == this.field_4) {
- this.carrying = false;
- Sounds.play(5);
- } else if (this.tryMove()) {
- this.carrying = false;
- Sounds.play(3);
- if (Runko.VibraOn) {
- Jil.triggerVibrator(50);
- }
-
- this.myPaint(3);
- this.myPaint(6);
- if (!this.checkLines() && this.newTurn()) {
- Sounds.play(8);
- this.gameOver = true;
- this.type = 2;
- this.canUndo = false;
- }
-
- this.myPaint(8);
- } else {
- Sounds.play(4);
- }
- } else if (this.board[this.field_2 * 10 + this.field_1] != 0) {
- Sounds.play(3);
- if (Runko.VibraOn) {
- Jil.triggerVibrator(50);
- }
-
- this.field_3 = this.field_1;
- this.field_4 = this.field_2;
- this.carrying = true;
- }
- }
-
- }
-
- private boolean isKeyPressed() {
- return this.key >= 0;
- }
-
- protected void pause() {
- this.paused = true;
- }
-
- protected void resume() {
- this.paused = false;
- Object var1 = this.obj;
- synchronized(var1) {
- this.obj.notifyAll();
- }
- }
-
- private void waitForAnyKey(int var1) throws Exception {
- while(this.paused) {
- Object var2 = this.obj;
- synchronized(var2) {
- this.obj.wait();
- }
- }
-
- Object var7 = this.obj;
- synchronized(var7) {
- this.obj.notifyAll();
- this.obj.wait((long)var1);
- }
- }
-
- private void waitForKey(int var1) throws Exception {
- while(this.paused) {
- Object var2 = this.obj;
- synchronized(var2) {
- this.obj.wait();
- }
- }
-
- if (this.key < 0) {
- Object var7 = this.obj;
- synchronized(var7) {
- this.obj.wait((long)var1);
- }
- }
-
- }
-
- private void waitForKeyRelease(int var1) throws Exception {
- while(this.paused) {
- Object var2 = this.obj;
- synchronized(var2) {
- this.obj.wait();
- }
- }
-
- if (this.key >= 0) {
- Object var7 = this.obj;
- synchronized(var7) {
- this.obj.wait((long)var1);
- }
- }
-
- }
-
- protected void keyPressed(int var1) {
- if (Jil.isMenuKey(var1)) {
- this.pause();
- this.runko.showMenu();
- } else {
- this.key = -1;
- this.field_11 = true;
- label32:
- switch (((Canvas)this).getGameAction(var1)) {
- case 1:
- this.key = 4;
- break;
- case 2:
- this.key = 1;
- break;
- case 3:
- case 4:
- case 7:
- default:
- switch (var1) {
- case 49:
- this.key = 6;
- break label32;
- case 50:
- this.key = 4;
- break label32;
- case 51:
- this.key = 7;
- break label32;
- case 52:
- this.key = 1;
- break label32;
- case 53:
- this.key = 0;
- break label32;
- case 54:
- this.key = 2;
- break label32;
- case 55:
- this.key = 8;
- break label32;
- case 56:
- this.key = 3;
- break label32;
- case 57:
- this.key = 9;
- break label32;
- default:
- this.key = 5;
- break label32;
- }
- case 5:
- this.key = 2;
- break;
- case 6:
- this.key = 3;
- break;
- case 8:
- this.key = 0;
- }
-
- Object var2 = this.obj;
- synchronized(var2) {
- this.obj.notifyAll();
- }
- }
-
- }
-
- protected void keyReleased(int var1) {
- this.field_11 = false;
- this.key = -1;
- Object var2 = this.obj;
- synchronized(var2) {
- this.obj.notifyAll();
- }
- }
-
- private boolean checkLines() {
- for(int var1 = 0; var1 < this.poista.length; ++var1) {
- this.poista[var1] = false;
- }
-
- for(int var2 = 0; var2 < 7; ++var2) {
- for(int var3 = 0; var3 < 10; ++var3) {
- byte var4 = this.board[var2 * 10 + var3];
- if (var4 != 0) {
- for(int var5 = 0; var5 < 8; ++var5) {
- var4 = this.board[var2 * 10 + var3];
- int var6 = 0;
- boolean var7 = false;
- int var8 = var3;
-
- for(int var9 = var2; !var7; var9 += dirs[var5 * 2 + 1]) {
- if (var9 <= 6 && var9 >= 0 && var8 <= 9 && var8 >= 0) {
- if (var4 == 1 && this.board[var9 * 10 + var8] != 0) {
- var4 = this.board[var9 * 10 + var8];
- }
-
- if (this.board[var9 * 10 + var8] != var4 && this.board[var9 * 10 + var8] != 1) {
- var7 = true;
- } else {
- ++var6;
- }
- } else {
- var7 = true;
- }
-
- var8 += dirs[var5 * 2 + 0];
- }
-
- if (var6 >= 5) {
- for(int var10 = 0; var10 < var6; ++var10) {
- this.poista[(var2 + var10 * dirs[var5 * 2 + 1]) * 10 + var3 + var10 * dirs[var5 * 2 + 0]] = true;
- }
- }
- }
- }
- }
- }
-
- boolean var12 = false;
- int var14 = 0;
-
- for(int var15 = 0; var15 < 7; ++var15) {
- for(int var16 = 0; var16 < 10; ++var16) {
- if (this.poista[var15 * 10 + var16]) {
- var12 = true;
- var14 += 5;
- this.game_score += 5 + var14;
- this.field_5[var15 * 10 + var16] = this.board[var15 * 10 + var16];
- this.board[var15 * 10 + var16] = 0;
- }
- }
- }
-
- if (var12) {
- Sounds.play(0);
- if (Runko.VibraOn) {
- Jil.triggerVibrator(250);
- }
-
- try {
- for(int var17 = 0; var17 < 5; ++var17) {
- this.waitForKey(50);
- this.myPaint(2);
- this.waitForKey(50);
- this.myPaint(1);
- }
- } catch (Exception var11) {
- }
-
- for(int var18 = 0; var18 < this.field_5.length; ++var18) {
- this.field_5[var18] = 0;
- }
- }
-
- return var12;
- }
-
- private boolean checkFull() {
- for(int var1 = 0; var1 < this.board.length; ++var1) {
- if (this.board[var1] == 0) {
- return false;
- }
- }
-
- return true;
- }
-
- private boolean newTurn() {
- for(int var1 = 0; var1 < this.board.length; ++var1) {
- if (this.field_5[var1] == 2) {
- this.board[var1] = 0;
- this.field_5[var1] = 0;
- }
- }
-
- for(int var2 = 0; var2 < 3; ++var2) {
- if (this.checkFull()) {
- return true;
- }
-
- int var3;
- int var4;
- do {
- var3 = rnd() % 10;
- var4 = rnd() % 7;
- } while(this.board[var4 * 10 + var3] != 0);
-
- this.board[var4 * 10 + var3] = (byte)(rnd() % 7 + 1);
- this.field_5[var4 * 10 + var3] = this.board[var4 * 10 + var3];
- }
-
- try {
- for(int var6 = 0; var6 < 2; ++var6) {
- this.waitForKey(50);
- this.myPaint(1);
- this.waitForKey(50);
- this.myPaint(2);
- }
- } catch (Exception var5) {
- }
-
- for(int var7 = 0; var7 < this.field_5.length; ++var7) {
- this.field_5[var7] = 0;
- }
-
- return this.checkFull();
- }
-
- private boolean tryMove() {
- if (this.checkPath(this.field_3, this.field_4, this.field_1, this.field_2)) {
- System.arraycopy(this.board, 0, this.undoBoard, 0, this.board.length);
- this.undo_score = this.game_score;
- this.canUndo = true;
- this.board[this.field_2 * 10 + this.field_1] = this.board[this.field_4 * 10 + this.field_3];
- this.board[this.field_4 * 10 + this.field_3] = 0;
- return true;
- } else {
- return false;
- }
- }
-
- private boolean checkPath(int var1, int var2, int var3, int var4) {
- for(int var5 = 0; var5 < this.board.length; ++var5) {
- if (this.board[var5] == 0) {
- this.closed[var5] = false;
- } else {
- this.closed[var5] = true;
- }
- }
-
- return this.checkPoint(var1, var2, var3, var4);
- }
-
- private boolean checkPoint(int var1, int var2, int var3, int var4) {
- this.closed[var2 * 10 + var1] = true;
- if (var1 == var3 && var2 == var4) {
- return true;
- } else if (var2 < 6 && !this.closed[(var2 + 1) * 10 + var1] && this.checkPoint(var1, var2 + 1, var3, var4)) {
- return true;
- } else if (var1 < 9 && !this.closed[var2 * 10 + var1 + 1] && this.checkPoint(var1 + 1, var2, var3, var4)) {
- return true;
- } else if (var2 > 0 && !this.closed[(var2 - 1) * 10 + var1] && this.checkPoint(var1, var2 - 1, var3, var4)) {
- return true;
- } else {
- return var1 > 0 && !this.closed[var2 * 10 + (var1 - 1)] && this.checkPoint(var1 - 1, var2, var3, var4);
- }
- }
-
- static int rnd() {
- return rnd0.nextInt() >>> 1;
- }
-
- void updateHighscoreImages() {
- this.updateHighscoreImage(this.ihsEasy, this.tti, this.hsName[0], this.hsValue[0]);
- }
-
- void updateHighscoreImage(Image var1, Image var2, String[] var3, int[] var4) {
- Graphics var5 = var1.getGraphics();
- Font var6 = this.font;
- var5.setFont(var6);
- var5.setColor(16777215);
- var5.fillRect(0, 0, var1.getWidth(), var1.getHeight());
- var5.setColor(0);
- var5.drawImage(var2, var1.getWidth() >> 1, 2, 17);
- int var7 = var6.stringWidth("10.") + 2;
- int var8 = var1.getWidth() - 8;
- int var9 = 0;
-
- for(int var10 = 18 + var6.getBaselinePosition(); var9 < 10; var10 += var6.getHeight()) {
- var5.drawString(Integer.toString(var9 + 1) + ".", var7, var10, 72);
- var5.drawString(var3[var9], var7 + 1, var10, 68);
- var5.drawString(Integer.toString(var4[var9]), var8, var10, 72);
- int var11 = var8 - var6.stringWidth(Integer.toString(var4[var9])) - 2;
- int var12 = (var7 + 7 + var6.stringWidth(var3[var9])) / 5 * 5;
- if (var12 < var11) {
- while(var12 < var11) {
- var5.drawLine(var12, var10, var12, var10);
- var12 += 5;
- }
- }
-
- ++var9;
- }
-
- }
-
- private boolean checkHighScore(int var1, int var2) {
- for(int var3 = 0; var3 < this.hsName[var1].length; ++var3) {
- if (this.hsValue[var1][var3] <= var2) {
- for(int var4 = this.hsName[var1].length - 1; var4 > var3; --var4) {
- this.hsName[var1][var4] = this.hsName[var1][var4 - 1];
- this.hsValue[var1][var4] = this.hsValue[var1][var4 - 1];
- }
-
- this.hsName[var1][var3] = this.runko.getName("New high score!", "Enter your name:");
- this.hsValue[var1][var3] = var2;
- this.updateHighscoreImages();
-
- try {
- this.saveHighScores();
- } catch (Exception var6) {
- }
-
- return true;
- }
- }
-
- return false;
- }
-
- private void saveHighScores() {
- try {
- ByteArrayOutputStream var1 = new ByteArrayOutputStream();
- DataOutputStream var2 = new DataOutputStream(var1);
-
- for(int var3 = 0; var3 < this.hsName.length; ++var3) {
- for(int var4 = 0; var4 < this.hsName[var3].length; ++var4) {
- var2.writeUTF(this.hsName[var3][var4]);
- var2.writeInt(this.hsValue[var3][var4]);
- }
- }
-
- byte[] var5 = var1.toByteArray();
- Jil.saveData("Scores", var5);
- } catch (Exception var6) {
- }
-
- }
-
- private void loadHighScores() {
- try {
- byte[] var1 = Jil.loadData("Scores");
- ByteArrayInputStream var2 = new ByteArrayInputStream(var1);
- DataInputStream var3 = new DataInputStream(var2);
-
- for(int var4 = 0; var4 < this.hsName.length; ++var4) {
- for(int var5 = 0; var5 < this.hsName[var4].length; ++var5) {
- this.hsName[var4][var5] = var3.readUTF();
- this.hsValue[var4][var5] = var3.readInt();
- }
- }
- } catch (Exception var6) {
- }
-
- }
-
- private void refresh() {
- ((Canvas)this).repaint();
- ((Canvas)this).serviceRepaints();
- Thread.yield();
- }
-
- private boolean ootaNappii(int var1) {
- try {
- this.key = -1;
- this.waitForAnyKey(var1);
- } catch (Exception var3) {
- }
-
- return this.isKeyPressed();
- }
-
- private boolean startMenu() {
- try {
- this.startEasy = true;
- this.field_12 = 0;
- this.refresh();
-
- while(true) {
- while(!this.ootaNappii(500)) {
- this.sblink = !this.sblink;
- this.refresh();
- }
-
- if (this.key == 0) {
- Runko.soundSelect();
- if (this.startEasy) {
- if (this.field_12 != 0) {
- Runko.soundSelect();
- break;
- }
-
- this.field_12 = 1;
- } else {
- this.runko.showHelp();
- }
- } else {
- Runko.soundMove();
- this.sblink = true;
- this.startEasy = !this.startEasy;
- this.refresh();
- }
- }
- } catch (Exception var2) {
- }
-
- return !this.startEasy;
- }
-
- private void startMenu(Graphics var1) {
- var1.setClip(0, 0, this.field_7, this.field_8);
- var1.setColor(16777215);
- var1.fillRect(0, 0, this.field_7, this.field_8);
- int var2 = ((Canvas)this).getHeight() - (this.iHelp[this.field_12].getHeight() + this.iStart[0].getHeight()) >> 1;
- if (var2 < 0) {
- var2 = 0;
- }
-
- var1.drawImage(this.iHelp[this.field_12], this.field_9, var2, 17);
- var2 += this.iHelp[this.field_12].getHeight() + 2;
- var1.drawImage(this.iStart[0], this.field_9, var2, 17);
- int var3 = this.iStart[0].getHeight() >> 1;
- if (this.sblink) {
- if (this.startEasy) {
- var1.setClip(0, var2, this.field_7, var3);
- } else {
- var1.setClip(0, var2 + var3, this.field_7, var3);
- }
-
- var1.drawImage(this.iStart[1], this.field_9, var2, 17);
- }
-
- }
- }
-